// /*
//  * @作者: 沙昊
//  * @邮箱: shahao@zju.edu.cn
//  * @功能: 
//  * @包含算法: 
//  * Copyright (c) 2023 by 沙昊, All Rights Reserved. 
//  */
// #include <iostream>
// #include <sstream>
// #include <string> 
// #include <vector>
// #include <queue>
// #include <stack>
// #include <unordered_map>
// using namespace std;



// struct ListNode {
//     int val;
//     ListNode* next;
//     ListNode(int x): val(x),next(NULL){}
   
// };
// unordered_map<int,pair<ListNode*,ListNode*>> hash;

// ListNode* dummy = new ListNode(0);

// void dynamic_allocation(){

// }
// void fixed_allocation(int id){

// }
// void release(int id){

// }


// int main(){
//     int left,right;
//     cin>>left>>right;
//     ListNode* thread_handler = dummy;
//     for(int i= left; i<=right; i++){
//         ListNode* temp = new ListNode(i);
//         thread_handler->next = temp;
//         hash.insert(i,<thread_handler,temp>);
//         pair<int, int>(nums[i], i)
//         thread_handler = thread_handler->next;
//     }

//     int n_operate;
//     cin>>n_operate;
//     vector<vector<int>> operations; 
//     for(int i =0; i<n_operate; i++){
//         int temp1;
//         int temp2;
//         cin>>temp1>>temp2;
//         vector<int> temp(2);
//         temp[0] = temp1;
//         temp[1] = temp2;
//         operations.push_back(temp);
//     }


 

// }


#include <iostream>
#include <list>
#include <unordered_map>

class ResourceList {
public:
  explicit ResourceList(int start, int cap) {
    for (int i = 0; i < cap; ++i) {
      inner_list_.emplace_back(start + i);  
      index_map_.emplace(start + i, --inner_list_.end());
    }
  }

  void dyn(int size) {
    for (int i = 0; i < size; ++i) {
      index_map_.erase(inner_list_.front());
      inner_list_.pop_front();
    }
  }

  void spc(int id) {
    auto it = inner_list_.begin();
    inner_list_.erase(index_map_[id]);
    index_map_.erase(id);
  }

  void release(int id) {
    inner_list_.emplace_back(id);
    index_map_.emplace(id, --inner_list_.end());
  }

  int first() {
    return inner_list_.front();
  }
private:
    std::list<int> inner_list_{};
    std::unordered_map<int, std::list<int>::iterator> index_map_{};
};